package main

import "fmt"

func main() {
	//数据类型
	/*
		布尔型：bool
		整型：int8、int16、int32、int64
		浮点型：float32、float64
		复数：complex64、complex128
		字符串：string
		字符：byte
		指针：*
	*/
	var i = 10            // 等同于 var i int = 10
	var f = 3.14          // 等同于 var f float64 = 3.14
	var b bool            // 等同于 var b bool = true
	var s = "hello world" // 等同于 var s string = "hello world"

	// 1. 打印
	fmt.Println("Hello World!")

	// 2. 数据类型
	fmt.Printf("%T %T %T %T\n", i, f, b, s)
	fmt.Printf("%v %v %v %q \n", i, f, b, s)

	// 3. Go构建
	/*
		Go 源代码存储在 .go 文件中。文件名由小写字母组成。如果文件名有几个部分，应该用下划线“_”分隔。
		Go 程序的执行从main()函数开始。
		Go 程序的行分隔符可以是分号(;)，也可以是换行符。
		Go 程序的语句块使用大括号({})分隔。
		Go 程序的变量声明必须使用var关键字。
		_ 是一个特殊的标识符，用于忽略值。
	*/

	// 4. go关键词
	/*
		break：跳出循环
		case：switch语句中的条件
		chan：通道
		const：常量
		continue：跳过循环中的剩余语句
		default：switch语句中的默认条件
		defer：延迟执行
		else：if语句中的条件
		fallthrough：继续执行下一个case
		for：循环
		func：函数
		go：并发执行
		goto：跳转到标签
		if：条件语句
		import：导入包
		interface：接口
		map：映射
		package：包
		range：遍历
		return：返回
		select：选择
		struct：结构体
		switch：选择语句
		type：类型
		var：变量
	*/

	// 5. 包
	/*
		包是 Go 语言的基本构建块，它包含了相关的函数、变量、常量和类型。
		包的作用是将相关的代码组织在一起，以便在其他程序中使用。
		包的名称必须是小写字母，不能包含空格或特殊字符。
		包的名称必须是唯一的，不能与其他包的名称相同。
		包的名称必须是有意义的，以便在其他程序中使用。


		可见性规则：
		1. 如果一个标识符（变量名、函数名、结构体名等）以大写字母开头，那么它就是导出的，其他包可以访问它。
		2. 如果一个标识符以小写字母开头，那么它就是未导出的，其他包不能访问它。
	*/

}
